Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

219
Visualizações
No se permiten varias claves principales para la tabla "app_employee".

Django 1.11 con PostgreSQL.

Voy a migrar mi sitio y models.py arroja el error de que no puedo tener más de una clave principal. No puedo ver dónde lo hago (o no entiendo cómo).

 class Employee(models.Model): Aegis_ID = models.UUIDField(primary_key=True, null=False, default=uuid.uuid4, editable=False, serialize=True) Employee_Number = models.ForeignKey('self', on_delete=models.CASCADE, related_name='Company_Employee_Number', null=True, blank=True, max_length=6, help_text="Employee ID") Employee_FName = models.CharField(null=True, blank=True, max_length=25, help_text="First Name") Employee_LName = models.CharField(null=True, blank=True, max_length=25, help_text="Last Name") Employee_Email = models.EmailField(max_length=80, blank=True, help_text="GPM Email address") Employee_Position = models.ForeignKey('self', on_delete=models.CASCADE, null=True, blank=True, related_name='Department_Employee_Position', max_length=3, choices=EMPLOYEE_POSITION, help_text="Select position of this Employee.") Hire_Date = models.DateField(null=True, blank=True, help_text="Enter the employee hire date.") Employee_Division = models.CharField(max_length=2, null=True, blank=True, choices=DIVISION_CHOICES, help_text="Assign the Audit Division for this employee.") Employee_Region = models.CharField(max_length=3, null=True, blank=True, choices=REGION_CHOICES, help_text="Assign the Audit Region for this employee.") Employee_District = models.CharField(max_length=3, null=True, blank=True, choices=DISTRICT_CHOICES, help_text="Assign the Audit District for this Employee.")

Al leer las páginas de Django sobre este tema exacto, aparece como un problema resuelto en 1.7 y tiene que ver con cómo Django ordenaba las tablas por clase, alfabéticamente.

También probé python manage.py flush seguido de makemigrations antes de migrate

Entonces, ¿qué campos está Django / Postgres intentando hacer una "id" y "primary" porque simplemente no entiendo, aquí ...

De acuerdo con la documentación de Django con respecto a las claves primarias automáticas, existe lo que no se ve es id = models.AutoField(primary_key=True) pero también entendí que si asignas primary_key=True a un campo, esto no se aplica

about 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

En su modelo anterior, no se permiten claves primarias múltiples para la tabla "app_employee".

No viene porque tienes

 Aegis_ID = models.UUIDField(primary_key=True, null=False, default=uuid.uuid4, editable=False, serialize=True)

Porque en la documentación de Django se especifica claramente que

Documentación de Django

Field.primary_key Si es True, este campo es la clave principal del modelo.

Si no especificas primary_key=True para ningún campo en tu modelo, Django agregará automáticamente un AutoField para contener la clave principal, por lo que no necesitas establecer primary_key=True en ninguno de tus campos a menos que quieras anular el Comportamiento predeterminado de clave principal.

primary_key=Verdadero implica nulo=Falso y único=Verdadero. Solo se permite una clave principal en un objeto.

He probado su modelo en mi proyecto y está funcionando absolutamente bien. Por simplicidad eliminé otros campos.

modelos.py

 from __future__ import unicode_literals from django.db import models import uuid class Employee(models.Model): Aegis_ID = models.UUIDField(primary_key=True, null=False,default=uuid.uuid4, editable=False, serialize=True) Employee_Number = models.ForeignKey('self', on_delete=models.CASCADE, related_name='Company_Employee_Number', null=True, blank=True, max_length=6, help_text="Employee ID") Employee_FName = models.CharField(null=True, blank=True, max_length=25, help_text="First Name") Employee_LName = models.CharField(null=True, blank=True, max_length=25, help_text="Last Name") Employee_Email = models.EmailField(max_length=80, blank=True, help_text="GPM Email address")

y cuando lo hice

 (venv) astikanand@Developer-PC:~/firstsite$ python manage.py makemigrations Migrations for 'employee': employee/migrations/0001_initial.py - Create model Employee

y entonces

 (venv) astikanand@Developer-PC:~/firstsite$ python manage.py migrate Operations to perform: Apply all migrations: admin, auth, contenttypes, employee, sessions Running migrations: Applying employee.0001_initial... OK

por lo que está funcionando bien .

lo que tienes que hacer es

Ya sea que vuelva a crear su aplicación o simplemente comience su proyecto de nuevo, puede haber algunos problemas de dependencia o algo así. Pero su código para el modelo Employee está bien.

about 4 years ago · Santiago Trujillo Relatório

0

Es muy posible que haya cambiado las claves principales y/o las referencias a otros modelos/tablas y algunas dependencias heredadas permanecieron en los archivos de migración.

Consulte la documentación oficial de Django para revertir migraciones pasadas. No es necesario que reinicie su proyecto para eliminar las dependencias.

 python manage.py makemigrations --empty yourappname

Eso es. Luego verifique el archivo 0001_initial.py en la carpeta de migraciones en su aplicación para asegurarse de que se hayan eliminado todas las dependencias. Debería verse como:

 from django.db import migrations class Migration(migrations.Migration): dependencies = [ ('yourappname', '0001_initial'), ] operations = [ ]
about 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda